import logging

from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    return 'Index Page'


@app.route('/hello')
def hello():
    return 'Hello, World'


"""
我们也可以动态变化 URL 的某些部分， 还可以为一个函数指定多个规则。
如：我在路由后，用尖括号 <> 包起我们想传入的变量，然后放入函数中，进行一些操作
通过把 URL 的一部分标记为 <variable_name> 就可以在 URL 中添加变量。
标记的部分会作为关键字参数传递给函数
"""


@app.route('/hello/<username>')
def show_variable(username):
    return "hello %s" % username


# 通过使用 <converter:variable_name> ，可以 选择性的加上一个转换器，为变量指定规则。请看下面的例子:
# 这样只有传入的变量是int型的时候，才会走入这个convert_variable处理函数
@app.route('/hello/<int:user_age>')
def convert_variable(user_age):
    return "my age is %s" % user_age


"""
那当然，我们也可以在这个函数中进行各种操作
就像我们正常本地函数一样，只不过结果会通过HTTP协议，通过网络，将数据传输到web前端
"""


@app.route('/hello/<int:user_age>')
def add_some_funcition_logic(user_age):
    if user_age < 0 or user_age > 150:
        logging.ERROR("user_age = %s is invalid" % user_age)
    return "my age is %s" % user_age


if __name__ == '__main__':
    app.run(host="0.0.0.0", debug=True)
